<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // ES5 的写法
        // function f(x, y, z) {
        //     // ...
        //     console.log(x,y,z);
        // }


        // var args = [0, 1, 2];
        // f.apply(null, args);




        // ES6的写法
        // function f(x, y, z) {
        //     // ...

        //     console.log(x,y,z);
        // }
        // let args = [0, 1, 2];
        // f(...args);

        // ES5 的写法
        // Math.max.apply(null, [14, 3, 77])

        // ES6 的写法
        // var aa=Math.max(...[14, 3, 77])
        // console.log(aa);

        // var arr1 = [0, 1, 2];
        // var arr2 = [3, 4, 5];
        // Array.prototype.push.apply(arr1, arr2);
        // console.log(arr1);


        // ES6 的写法
        // let arr1 = [0, 1, 2];
        // let arr2 = [3, 4, 5];
        // arr1.push(...arr2);

        // ES5
        // var cc=new Date(2015, 1, 15)

        // var bb=new (Date.bind(Date, [null, 2015, 1, 1]))
        // var aa=new (Date.bind.apply(Date, [null, 2015, 1, 1]))
        // // console.log(aa);
        // console.log(cc);

        // var a1 = [1, 2];
        // var a2 = a1;

        // a2[0] = 2;
        // // a1 // [2, 2]
        // console.log(a1);
        // console.log(a2);


        // const a1 = [1, 2];
        // const a2 = a1.concat();

        // a2[0] = 2;


        // console.log(a1);
        // console.log(a2);

        // const a1 = [1, 2];
        // // 写法一
        // const a2 = [...a1];
        // // 写法二
        // const [...a2] = a1;
        // console.log();

        // function fn1(n){
        //     if(n=-6){
        //         return 
        //     }
        //     return fn1(n-2)
        // }
        // console.log(fn1(16));

        // const a1 = [1, 2];
        // // 写法一
        // // const a2 = [...a1];
        // // 写法二
        // const [...a2] =a1;
        // a2[0]=9

        // console.log(a2,a1);
        // const arr1 = ['a', 'b'];
        // const arr2 = ['c'];
        // const arr3 = ['d', 'e'];

        // // ES5 的合并数组
        // arr1.concat(arr2, arr3);
        // // [ 'a', 'b', 'c', 'd', 'e' ]
        // console.log(arr1.concat(arr2, arr3));

        // console.log([...arr1, ...arr2, ...arr3])
        //         // [ 'a', 'b', 'c', 'd', 'e' ]);

        const a1 = [{
            foo: 1
        }];
        const a2 = [{
            bar: 2
        }];

        const a3 = a1.concat(a2);
        console.log(a3);
        const a4 = [...a1, ...a2];
        console.log(a4);
        console.log(a3 === a4);

        a3[0] === a1[0] // true
        a4[0] === a1[0] // true
        console.log(
            a4[0] === a3[0] // true
        );
    </script>
</body>

</html>